package eteam.aps.service;

import eteam.aps.common.helper.JsonPage;
import eteam.aps.model.entity.ParamInfo;
import eteam.aps.model.vo.ParamFromWindowingVo;
import eteam.aps.model.vo.ParamInfoDtlVo;
import eteam.aps.model.vo.ParamInfoVo;

import java.util.List;
import java.util.Map;

/**
 * 参数信息增删改查相关接口
 *
 * @author WMT
 */
public interface ParamInfoService {
    /**
     * 新增参数数据
     * @param paramInfo 参数数据
     * @return 受影响的行数
     */
    int insert(ParamInfo paramInfo) throws Exception;

    /**
     * 根据fid物理删除参数信息,需要设置修改人 修改时间
     * @param fId fid
     * @return 受影响的行数
     */
    int delete(String fId);

    /**
     * 更新参数信息
     * @param paramInfo 参数信息
     * @return 受影响的行数
     */
    int update(ParamInfo paramInfo) throws Exception;


    /**
     * 统计 参数来源 的总数
     * @param fParamFrom 参数来源数据
     * @return 总数
     */
    int selectCountByFDpFrom(int fParamFrom);

    /**
     * 统计 参数类型 的总数
     * @param fDpType 参数类型
     * @return 总数
     */
    int selectCountByFDpType(int fDpType);

    /**
     * 统计 参数名称 的总数
     * @param fDpName 参数名称
     * @return 总数
     */
    int selectCountByFDpName(String fDpName);

    /**
     * 统计 参数编号 的总数
     * @param fDpCode 参数编号
     * @return 总数
     */
    int selectCountByFDpCode(String fDpCode);

    /**
     * 根据fid查询参数状态
     * @param fid fid
     * @return 参数状态
     */
    int selectFStateByFId(String fid);

    /**
     * 分页查询参数
     * @param page 从第几页开始 必传
     * @param pageSize 每页条数 必传
     * @return
     */
    JsonPage<ParamInfoVo> selectAll(Map<String, Object> map, int page, int pageSize);

    /**
     * 根据fId查询参数详情
     * @param fId fId
     * @return 参数详情
     */
    ParamInfoVo selectByfId(String fId);

    /**
     * 查询参数来源 --字典类别
     * @return 字典类别的code 、 name
     */
    List<ParamFromWindowingVo> selectPfromDdc();

    /**
     * 查询参数来源 --组织机构
     * @return 组织机构的code 、 name
     */
    List<ParamFromWindowingVo> selectPfromSo();

    /**
     * 在产品子表中查询参数信息
     * @return 参数信息
     */
    List<ParamInfoDtlVo> selectParamDtl();
}
